package com.etl.enums;

/**
 * 调度状态枚举
 *
 * @author: chenfenghai
 * @version: 1.0
 * @date: 2020-10-19 16:14
 */
public enum ScheduleStatusEnum {

    /**
     * 调度状态，1：已停止
     */
    STOPPED(1, "已停止"),

    /**
     * 调度状态，2：等待中
     */
    WAITING(2, "等待中"),

    /**
     * 调度状态，3：运行中
     */
    RUNNING(3, "运行中");

    /**
     * 编码
     */
    private final Integer code;

    /**
     * 显示文本
     */
    private final String text;

    ScheduleStatusEnum(Integer code, String text) {
        this.code = code;
        this.text = text;
    }

    /**
     * 获取编码
     *
     * @return code
     */
    public Integer getCode() {
        return code;
    }

    /**
     * 获取显示文本
     *
     * @return text
     */
    public String getText() {
        return text;
    }

    /**
     * 根据编码获取对应的枚举，没有匹配则返回null
     *
     * @param code 编码
     * @return this
     */
    public static ScheduleStatusEnum getEnum(Object code) {
        if (code == null) {
            return null;
        }
        for (ScheduleStatusEnum enumType : ScheduleStatusEnum.values()) {
            if (enumType.compare(code)) {
                return enumType;
            }
        }
        return null;
    }

    /**
     * 比较，相同返回true，否则返回false
     *
     * @param codeOrEnum 编码或枚举
     * @return boolean
     */
    public boolean compare(Object codeOrEnum) {
        if (code == null) {
            return false;
        }
        if (codeOrEnum instanceof ScheduleStatusEnum) {
            return this.compareTo((ScheduleStatusEnum) codeOrEnum) == 0;
        } else if (codeOrEnum instanceof Integer) {
            return this.code.compareTo((Integer) codeOrEnum) == 0;
        } else {
            return this.code.toString().equals(codeOrEnum);
        }
    }
}
